/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ortustve.media.metadata;

import java.util.List;

/**
 *
 * @author jphipps
 */
public interface IMetadataProvider
{
        //Search
        public List<Object> Search(String filter);
    
	//MediaType
	public int GetMediaType(Object mediafile);
	public int GetSageMediaType(Object smo);
        public void SetMediaType(Object mediafile, Object mediatype);
	public int GetMediaGroup(Object mediafile);
	public int GetSageMediaGroup(Object smo);
	public boolean IsTV(Object mediafile);
	public boolean IsTVMovie(Object mediafile);
	public boolean IsImportedTV(Object mediafile);
	public boolean IsRecorded(Object mediafile);
	public boolean IsImported(Object mediafile);
	public boolean IsSeries(Object mediafile);
	public boolean IsIntelligentRecorded(Object mediafile);
	public boolean IsFavorite(Object mediafile);
	public boolean IsHD(Object mediafile);
	public boolean IsSD(Object mediafile);
	public boolean IsMovie(Object mediafile);
	public boolean IsHDMovie(Object mediafile);
	public boolean IsSDMovie(Object mediafile);
	public boolean IsDVD(Object mediafile);
	public boolean IsBluRay(Object mediafile);

	//Common Metadata
	public String GetMediaTitle(Object mediafile);
	public String GetSageMediaTitle(Object smo);
	public String GetMediaFileID(Object mediafile);
	public String GetDescription(Object mediafile);
	public String GetSageDescription(Object smo);
        public void SetDescription(Object mediafile, String title);
	public List<Object> GetGenre(Object mediafile);
	public String GetImportDate(Object mediafile);
	public String GetPath(Object mediafile);
	public String GetMediaEncoding(Object mediafile);
	public String GetVideoEncoding(Object mediafile);
	public String GetAudioEncoding(Object mediafile);
	public String GetSubpicEncoding(Object mediafile);

	//TV Series Metadata
	public String GetSeriesTitle(Object mediafile);
	public String GetSeriesDescription(Object mediafile);
	public String GetSeriesNetwork(Object mediafile);
	public long GetSeriesFirstAirDate(Object mediafile);
	public long GetSeriesFinalAirDate(Object mediafile);
	public boolean IsSeriesStillRunning(Object mediafile);
	public String GetSeriesAirDay(Object mediafile);
	public long GetSeriesRunTime(Object mediafile);
	public long GetSeriesNextEpisodeDate(Object mediafile);
	public String GetSeriesTVRating(Object mediafile);
	public int GetSeriesTotalSeasons(Object mediafile);
	public int GetSeriesTotalEpisodes(Object mediafile);
	public int GetSeriesTotalEpisodesAvailable(Object mediafile);

	//TV Metadata
	public String GetShowTitle(Object mediafile);
	public String GetEpisodeTitle(Object mediafile);
	public String GetSageEpisodeTitle(Object smo);
	public int GetSeasonNumber(Object mediafile);
	public int GetEpisodeNumber(Object mediafile);
	public long GetOriginalAirDate(Object mediafile);

	//Movie Metadata
	public String GetReleaseDate(Object mediafile);
	public String GetMPAARating(Object mediafile);
	public String GetSageMPAARating(Object smo);
	public int GetUserRating(Object mediafile);
	public int GetSageUserRating(Object smo);
	public int GetDiscNumber(Object mediafile);

	//Cast Metadata
	public List<String> GetCast(Object mediafile);
	public String GetDirector(Object mediafile);
	public String GetWriter(Object mediafile);
	public String GetProducer(Object mediafile);
	public List<String> GetActors(Object mediafile);
}
